/*****************************
 *@file: PassiveSkill
 *@author: 陈吕唐
 *@desc: 被动技能(战斗开始时生效,当前角色死亡失效)
 *@date: 2024-03-20	18:00
 *****************************/
import { _decorator } from 'cc';
import { CharacterEvent } from '../CharacterEvent';
import { BaseSkill } from './BaseSkill';
const { ccclass, property } = _decorator;

@ccclass('PassiveSkill')
export class PassiveSkill extends BaseSkill {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/

    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/

    private _activeSkill: boolean = false;
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/

    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected onLoad(): void {
        super.onLoad();
        this.node.on(CharacterEvent.START, () => { this.activeSkill = true }, this);
        this.node.on(CharacterEvent.DEAD, () => { this.activeSkill = false }, this);
    }

    protected onDisable(): void {
        super.onDisable();
        this.activeSkill = false;
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    /**
     * 被动效果生效
     */
    protected effect(): void {

    }

    /**
     * 被动效果失效
     */
    protected lose(): void {

    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    protected get activeSkill(): boolean {
        return this._activeSkill;
    }
    protected set activeSkill(value: boolean) {
        if (this._activeSkill == value) {
            return;
        }
        this._activeSkill = value;

        if (value) {
            this.effect();
        } else {
            this.lose();
        }
    }
}


